package tech.heptagram.staff.cas.service.staff;


import java.util.List;

import tech.heptagram.staff.cas.domain.info.RolePermissionReq;
import tech.heptagram.staff.cas.domain.po.Role;

/**
 * @author zilaiye
 * @date 2017/12/8
 */
public interface CasRoleService {

    /**
     * 获取所有角色列表
     *
     * @return all roles list
     */
    List<Role> findAll();

    /**
     * 获取指定ID的角色信息
     *
     * @param roleId roleId
     * @return role info
     */
    Role findById(Integer roleId);

    /**
     * 获取员工的角色IDs
     *
     * @param staffCode
     * @return
     */
    List<Integer> findRoleIdsByStaffCode(String staffCode);

    /**
     * 获取指定员工拥有的角色列表
     *
     * @param staffCode
     * @return
     */
    List<Role> findRolesByStaffCode(String staffCode);

    /**
     * 根据菜单ID获取可以访问其的角色列表
     *
     * @param menuId
     * @return
     */
    List<Role> findRolesByMenuId(Integer menuId);

    /**
     * 保存角色
     *
     * @param role
     * @return
     */
    Integer saveRole(Role role);

    /**
     * 更新角色
     *
     * @param role
     */
    void updateRole(Role role);

    /**
     * 删除一个角色
     *
     * @param roleId id
     */
    void deleteById(Integer roleId, String deleteBy);

    /**
     * 保存菜单角色关系
     */
    Integer saveRolePermission(RolePermissionReq req);

    /**
     * 保存角色数据权限
     * @param req
     * @return
     */
    Integer saveRoleDataAuth(RolePermissionReq req);
}
